Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Теплоенергетичний факультет
Кафедра автоматизації проектування енергетичних процесів і систем
Звіт
до лабораторної роботи №6
з дисципліни «Операційні системи»
Тема «Система команд. Арифметичні команди. Обчислення цілочисельних арифметичних виразів з використанням команд MUL, IMUL, DIV, IDIV, ADD, ADC, INC, SUB, SBB, DEC, NEG, CBW, CWD»
Варіант 12
КИЇВ-2022
Мета роботи : програмування блоку обчислення арифметичних виразів на прикладі реалізації математичних формул з використанням арифметичних команд асемблера за індивідуальними завданнями.
Короткий теоретичний опис
Команди переміщення даних
MOVe operand Пересилання операнда. MOVe operand to/from system registers Пересилання операнда у системні регістри (або з них). Схема команди: MOV приймальник, джерело. Призначення: пересилання даних між регістрами або регістрами та пам’яттю. Команда має обмеження:
копіювання здійснюється з другого операнда у перший;
значення другого операнда не змінююється;
обидва оператора не можуть бути з пам’яті;
лише один з операндів може бути сегментним, приймальником не може бути регістр CS; не можна пересилати сегментні регістри:
не можна напряму ініціалізувати сегмент даних
довжина обох операндів повинна бути однаковою.
Команда Mov має розширену можливість: для випадку, коли довжина операндів різна використовується директива заначення типу: Тип PTR вираз.
Оператор PTR може використовуватися з елементами даних, мітками інструкцій. Він використовує специфікатори типів Byte, Word, Dword, Tbyte для явного зазначення типу DB, DW, DD, DQ, DT для змінних. Він також використовує специфікатори типів NEAR, FAR, PROC для явного зазначення відстані до мітки переходу.
Арифметичні команди
Команда складання ADD (ADDition). Синтаксис: ADD приймальник, джерело. Символьний код: ADD регістр/пам’ять, регістр/пам’ять/безпосереднє значення.Призначення: складання двох операндів джерела та приймальника розмірністю байт, слово або подвійне слово, записати результат складання за адресою першого операнда, встановити прапорці. Ця операція є коректною при використанні операндів: регістр-регістр, регістр-пам’ять, пам’ять-пам’ять, пам’ять-безпосереднє значення.Виконання команди додавання впливає на стан прапорців: CF (Carry)– перенесення (зі старшого знакового розряду; наприклад, для байта в 9-му розряді при виконанні команди додавання з’явилася 1), PF (Parity)– парність, AF (Auxiliary)- допоміжне перенесення, ZF (Zero)– нуль, SF (Sign)– мінус, OF (Overflow)– переповнювання.
Команда ADD використовується для складання двох цілочисельних операндів. Якщо результат складання виходить за межі першого операнда (виникає переповнювання), то врахувати цю ситуацію слід шляхом аналізу прапорця CF і подальшого можливого застосування команди ADC.
Команда складання двох операндів з урахуванням перенесенням з молодшого розряда ADC (ADDition with Carry).Синтаксис: ADС приймальник, джерело. Символьний код: ADС регістр/пам’ять, регістр/пам’ять/безпосереднє значення. Впливає на прапорці AF, CF, OF, PF, SF, ZF Результат заноситься у перший операнд, в залежності від результату встановлюються прапорці. Логіка роботи команди: <приймальник>=<приймальник>+<джерело>+<CF>.
Команда ADC використовується при складанні багаторозряднихдвійкових чисел. Її можна використовувати як самостійно, так і спільно з командою ADD. При спільному використанні команди ADC з командою ADD складання молодших байтів/слів/подвойних слів здійснюється командою ADD, а вже старші байти/слова/подвойні слова складаються командою ADC, що враховує перенесення з молодших розрядів в старші. Тобто команда ADC додає вміст прапорця перенесення CF (0 або 1) до першого операнда - приймальника, а потім додає до приймальника другий операнд – джерело.
Команда віднімання SUB (SUBtract). Синтаксис: SUB операнд_1, операнд_2. Символьний код: SUB регістр/пам’ять, регістр/пам’ять/безпосереднє значення. Впл...